package C.栈;

import java.util.HashMap;
import java.util.Map;

public class _682_棒球比赛 {
    /**
     * 用一个hash表 遍历ops 如果是数字直接push
     * +》确保之前已经有两个分数 然后相加结果push
     * D》最后一个分数*2 push
     * c》最后一个分数直接删掉
     *
     * 优化：在第一次遍历的时候 就直接计算结果总分数 避免第二次遍历
     * @param ops
     * @return
     */
    public int calPoints(String[] ops) {
        Map<Integer,Integer> score = new HashMap<>();
        int count =0;
        int s=0;

        for (int i=0;i<ops.length;i++){
            //正则表达式 判断是不是都是数字
            if (!ops[i].equals("+") & !ops[i].equals("D/队列")  & !ops[i].equals("C") ){
                score.put(count,Integer.valueOf(ops[i]));
                count++;
                s = s+Integer.valueOf(ops[i]);
            }else {
                int newScore =0;
                switch (ops[i]){
                    case "+":
                        newScore = score.get(score.size()-1)+score.get(score.size()-2);
                        s+= newScore;
                        score.put(count,newScore);
                        count++;
                        break;
                    case "D/队列":
                        newScore = score.get(score.size()-1)*2;
                        score.put(count,newScore);
                        s+= newScore;
                        count++;
                        break;
                    case "C":
                        s -= score.get(score.size()-1);
                        score.remove(score.size()-1);
                        count--;
                        break;

                }
            }
        }

        return s;


    }
}
